<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // Promise的拓展方法 => 给所有的Promise实例使用

    //then()
    // catch()
    // finally()

    // p.then(callback1,callback2)  为 Promise 实例添加状态改变时的回调函数。
    // then方法的第一个参数是resolved状态的回调函数，第二个参数是rejected状态的回调函数 
    // callback1    Promise实例状态 由pending(进行中)改为fulfilled已成功 ,执行此回调函数
    // callback2    Promise实例状态 由pending(进行中)改为rejected已失败 ,执行此回调函数

    // callback1,callback2 有一个形式参数 用于接收Promise实例中存储的数据

    // 可以理解为:提前订好了 状态改变时要执行的内容  => Promise实例状态改变时 执行对应的回调函数

    // 注意: then()方法中
    // callback2 可以接收reject()方法 以抛错形式传递的数据 (异常捕获机制  try...catch)
    // callback2 new Promise()的回调函数中代码执行过程中的错误 (仅限于同步的)

    var p = new Promise(function(resolve, reject){
        debugger;
        setTimeout(function(){
            debugger;
            var num = Math.random();
            if(num>0.5){
                resolve("成功");
            }else{
                reject("容我拒绝");
            }
        },2000)
    })
    console.log(p);

    p.then(function(msg){
        debugger;
        console.log("成功了", msg);
    },function(msg){
        debugger;
        console.log("我拒绝", msg);
    })
</script>
</html>